
package gui;

import business.Opcional;
import javax.swing.JOptionPane;


public class Opcionais_Principal extends javax.swing.JPanel {

    private static Opcionais_Principal instance;

    void setjTextFieldopcionaisPrincipalNomeEnabled(boolean edit) {
        jTextFieldOpcionaisPrincipalNome.setEnabled(edit);
    }

    void setjTextFieldOpcionaisPrincipalTarifa(String tarifa) {
        jTextFieldOpcionaisPrincipalTarifa.setText(tarifa);
    }
    
    public enum StatusOpcionaisPrincipal{
        scInserindo,
        scPesquisado
    }
    
    
    private StatusOpcionaisPrincipal sStatus;
    
    public Opcionais_Principal() {
        sStatus = StatusOpcionaisPrincipal.scInserindo;
        initComponents();
    }
    public void LimpaTela(){
        this.jTextFieldOpcionaisPrincipalNome.setText("");
        this.jTextFieldOpcionaisPrincipalTarifa.setText("");        
    }

    public static Opcionais_Principal getInstance(){
        if (instance == null)
           instance = new Opcionais_Principal();
        return instance;
    }
    
    
    public StatusOpcionaisPrincipal getsStatus() {
        return sStatus;
    }

    public void setsStatus(StatusOpcionaisPrincipal sStatus) {
        this.sStatus = sStatus;
    }

    public void setjTextFieldOpcionaisPrincipalNome(String nome) {
        this.jTextFieldOpcionaisPrincipalNome.setText(nome);
    }

    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel2 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jLabelOpcionaisPrincipalNome = new javax.swing.JLabel();
        jLabelOpcionaisPrincipalTarifa = new javax.swing.JLabel();
        jTextFieldOpcionaisPrincipalTarifa = new javax.swing.JTextField();
        jTextFieldOpcionaisPrincipalNome = new javax.swing.JTextField();
        jButtonOpcionaisPrincipalSalvar = new javax.swing.JButton();
        jButtonOpcionaisPrincipalEditar = new javax.swing.JButton();
        jButtonOpcionaisPrincipalPesquisar = new javax.swing.JButton();
        jButtonOpcionaisPrincipalDeletar = new javax.swing.JButton();
        jButtonOpcionaisPrincipalNovo = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();

        java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("gui/Bundle"); // NOI18N
        jLabel2.setText(bundle.getString("Opcionais_Principal.jLabel2.text")); // NOI18N

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        jLabelOpcionaisPrincipalNome.setText(bundle.getString("Opcionais_Principal.jLabelOpcionaisPrincipalNome.text")); // NOI18N

        jLabelOpcionaisPrincipalTarifa.setText(bundle.getString("Opcionais_Principal.jLabelOpcionaisPrincipalTarifa.text")); // NOI18N

        jTextFieldOpcionaisPrincipalTarifa.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextFieldOpcionaisPrincipalTarifaFocusLost(evt);
            }
        });

        jButtonOpcionaisPrincipalSalvar.setText(bundle.getString("Opcionais_Principal.jButtonOpcionaisPrincipalSalvar.text")); // NOI18N
        jButtonOpcionaisPrincipalSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonOpcionaisPrincipalSalvarActionPerformed(evt);
            }
        });

        jButtonOpcionaisPrincipalEditar.setText(bundle.getString("Opcionais_Principal.jButtonOpcionaisPrincipalEditar.text")); // NOI18N
        jButtonOpcionaisPrincipalEditar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonOpcionaisPrincipalEditarActionPerformed(evt);
            }
        });

        jButtonOpcionaisPrincipalPesquisar.setText(bundle.getString("Opcionais_Principal.jButtonOpcionaisPrincipalPesquisar.text")); // NOI18N
        jButtonOpcionaisPrincipalPesquisar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonOpcionaisPrincipalPesquisarActionPerformed(evt);
            }
        });

        jButtonOpcionaisPrincipalDeletar.setText(bundle.getString("Opcionais_Principal.jButtonOpcionaisPrincipalDeletar.text")); // NOI18N
        jButtonOpcionaisPrincipalDeletar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonOpcionaisPrincipalDeletarActionPerformed(evt);
            }
        });

        jButtonOpcionaisPrincipalNovo.setText(bundle.getString("Opcionais_Principal.jButtonOpcionaisPrincipalNovo.text")); // NOI18N
        jButtonOpcionaisPrincipalNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonOpcionaisPrincipalNovoActionPerformed(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        jLabel1.setText(bundle.getString("Opcionais_Principal.jLabel1.text")); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButtonOpcionaisPrincipalSalvar, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButtonOpcionaisPrincipalNovo, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButtonOpcionaisPrincipalEditar, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButtonOpcionaisPrincipalPesquisar, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButtonOpcionaisPrincipalDeletar, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(28, 28, 28)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(45, 45, 45)
                        .addComponent(jLabel1)
                        .addGap(0, 242, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(1, 1, 1)
                                .addComponent(jLabelOpcionaisPrincipalNome))
                            .addComponent(jLabelOpcionaisPrincipalTarifa))
                        .addGap(18, 18, 18)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jTextFieldOpcionaisPrincipalTarifa, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(0, 0, Short.MAX_VALUE))
                            .addComponent(jTextFieldOpcionaisPrincipalNome))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(22, 22, 22)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 16, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jTextFieldOpcionaisPrincipalNome, javax.swing.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE)
                            .addComponent(jLabelOpcionaisPrincipalNome))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jTextFieldOpcionaisPrincipalTarifa, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabelOpcionaisPrincipalTarifa))
                        .addGap(237, 237, 237))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jButtonOpcionaisPrincipalNovo, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButtonOpcionaisPrincipalSalvar, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButtonOpcionaisPrincipalEditar, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButtonOpcionaisPrincipalPesquisar, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButtonOpcionaisPrincipalDeletar, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap())))
        );
    }// </editor-fold>//GEN-END:initComponents

    private void jButtonOpcionaisPrincipalEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOpcionaisPrincipalEditarActionPerformed
       if (sStatus != StatusOpcionaisPrincipal.scPesquisado)
           JOptionPane.showMessageDialog(this,"Pesquise um opcional para editá-lo.");
       else
       {
             Opcional.alterarOpcional(jTextFieldOpcionaisPrincipalNome.getText(),jTextFieldOpcionaisPrincipalTarifa.getText());  
             jTextFieldOpcionaisPrincipalNome.setEnabled(true);
             sStatus = StatusOpcionaisPrincipal.scInserindo;
             LimpaTela();
       }
    }//GEN-LAST:event_jButtonOpcionaisPrincipalEditarActionPerformed

    private void jButtonOpcionaisPrincipalPesquisarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOpcionaisPrincipalPesquisarActionPerformed
       Opcionais_Pesquisar frame=new Opcionais_Pesquisar();
       frame.setVisible(true);      
    }//GEN-LAST:event_jButtonOpcionaisPrincipalPesquisarActionPerformed

    private void jButtonOpcionaisPrincipalSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOpcionaisPrincipalSalvarActionPerformed
        if(sStatus == StatusOpcionaisPrincipal.scInserindo){
            if (jTextFieldOpcionaisPrincipalNome.getText().isEmpty() ||jTextFieldOpcionaisPrincipalTarifa.getText().isEmpty() ){
                    JOptionPane.showMessageDialog(this,"Existem campos em branco!");
                    return;
            }
        
        if (Opcional.OpcionalExiste(jTextFieldOpcionaisPrincipalNome.getText())) {
            JOptionPane.showMessageDialog(this,"Opcional já Existente!");
            return;
        }
                 
        Opcional.insertOpcional(jTextFieldOpcionaisPrincipalNome.getText(), jTextFieldOpcionaisPrincipalTarifa.getText());
        LimpaTela();
    }
        else
            JOptionPane.showMessageDialog(this, "Para inserir um novo opcional, clique em novo.");
    }//GEN-LAST:event_jButtonOpcionaisPrincipalSalvarActionPerformed

    private void jButtonOpcionaisPrincipalNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOpcionaisPrincipalNovoActionPerformed
        jTextFieldOpcionaisPrincipalNome.setText("");
        jTextFieldOpcionaisPrincipalTarifa.setText("");
        jTextFieldOpcionaisPrincipalNome.setEnabled(true);
        sStatus = StatusOpcionaisPrincipal.scInserindo;
    }//GEN-LAST:event_jButtonOpcionaisPrincipalNovoActionPerformed

    private void jButtonOpcionaisPrincipalDeletarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOpcionaisPrincipalDeletarActionPerformed
        if (sStatus != StatusOpcionaisPrincipal.scPesquisado)
           JOptionPane.showMessageDialog(this,"Pesquise um opcional para editá-lo.");
        else{
            Opcional.deleteOpcionalPeloNome(jTextFieldOpcionaisPrincipalNome.getText());
            LimpaTela();
            sStatus=StatusOpcionaisPrincipal.scInserindo;
            jTextFieldOpcionaisPrincipalNome.setEnabled(true);
        }
    }//GEN-LAST:event_jButtonOpcionaisPrincipalDeletarActionPerformed

    private void jTextFieldOpcionaisPrincipalTarifaFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldOpcionaisPrincipalTarifaFocusLost
       String tarifa = jTextFieldOpcionaisPrincipalTarifa.getText();
        for (int i = 0; i < tarifa.length(); i++){
            tarifa = tarifa.replaceFirst(".","");
            if (!Character.isDigit(tarifa.charAt(i))){
                JOptionPane.showMessageDialog(this, "Valor de tarifa inválido!");
                jTextFieldOpcionaisPrincipalTarifa.requestFocus();
                jTextFieldOpcionaisPrincipalTarifa.selectAll();
                return;
            }
        }
    }//GEN-LAST:event_jTextFieldOpcionaisPrincipalTarifaFocusLost

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonOpcionaisPrincipalDeletar;
    private javax.swing.JButton jButtonOpcionaisPrincipalEditar;
    private javax.swing.JButton jButtonOpcionaisPrincipalNovo;
    private javax.swing.JButton jButtonOpcionaisPrincipalPesquisar;
    private javax.swing.JButton jButtonOpcionaisPrincipalSalvar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabelOpcionaisPrincipalNome;
    private javax.swing.JLabel jLabelOpcionaisPrincipalTarifa;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField jTextFieldOpcionaisPrincipalNome;
    private javax.swing.JTextField jTextFieldOpcionaisPrincipalTarifa;
    // End of variables declaration//GEN-END:variables
}
